<?php

class ingresos extends Baseingresos
{
    //atributos anteriores a la modificación
        protected $id_old;
        protected $detalles_del_ingreso_old;
	protected $importe_old;
	protected $categoria_ingresos_id_old;
	protected $sf_guard_user_old;
	protected $created_at_old;

	
    //fin
    //Metodos seters
          public function setId($v){
              $this->id_old = $this->getId();
              parent::setId($v);
          }
          public function setDetallesDelIngreso($v){
              $this->detalles_del_ingreso_old = $this->getDetallesDelIngreso();
              return parent::setDetallesDelIngreso($v);
          }
          public function setImporte($v){
              $this->importe_old = $this->getImporte();
              return parent::setImporte($v);
          }
          public function setCategoriaIngresosId($v){
              $this->categoria_ingresos_id_old = $this->getCategoriaIngresosId();
              return parent::setCategoriaIngresosId($v);

          }
          public function setSfGuardUser($v){
                $this->sf_guard_user_old = $this->getSfGuardUser();
                return parent::setSfGuardUser($v);
          }
          public function setCreatedAt($v){
                $this->created_at_old = $this->getCreatedAt();
                return parent::setCreatedAt($v);
          }
    //fin
    //Reescritura de los metodos base
        public function getByPosition_old($pos)
	{
		switch($pos) {
			case 0:
				return $this->id_old;
				break;
			case 1:
				return $this->detalles_del_ingreso_old;
				break;
			case 2:
				return $this->importe_old;
				break;
			case 3:
				return $this->categoria_ingresos_id_old;
				break;
			case 4:
				return $this->sf_guard_user_old;
				break;
			case 5:
				return $this->created_at_old;
				break;
			default:
				return null;
				break;
		} // switch()
	}


    //fin










    public function getCategoria(){
        return $this->getcategoria_ingresos();
    }

    private function SumMovimientos(){
        $criteria = new Criteria();
        $criteria->add(movimientosPeer::INGRESOS_ID,$this->getid());
        $movimientos = movimientosPeer::doSelectOne($criteria);
        if(!$movimientos){
           $movimientos = new movimientos();
           $movimientos->setCierreCajaId($movimientos->BuscarCajaAbierta());
        }
        $movimientos->setMontoingreso($this->getImporte());
        $movimientos->setIngresosId($this->getId());
        $movimientos->setCategorias($this->getcategoria_ingresos());
        $movimientos->setDescripcion($this->getDetallesDelIngreso());
        $movimientos->save();
    }

    public function save(PropelPDO $con = null){
        if(!$this->isNew()){
            auditoria::AuditoriaFull($this);
        }
        $affectedRows =  parent::save($con);
        $this->SumMovimientos();
        return $affectedRows;
    }
    private function AuditarBorrado(){
        $auditoria = new auditoria();
        $auditoria->setEvento('BORRADO');
        $auditoria->setTabla('INGRESOS');
        $usuario = sfContext::getInstance()->getUser();
        $auditoria->setUsuario($usuario);
        $auditoria->save();
        $au_det = new auditoria_detalle;
        $au_det->setAuditoriaId($auditoria->getId());
        $au_det->setCampo('Detalles del Ingreso');
        $au_det->setValoranterior($this->getDetallesDelIngreso());
        $au_det->setNuevovalor('');
        $au_det->save();
        $au_det = new auditoria_detalle;
        $au_det->setAuditoriaId($auditoria->getId());
        $au_det->setCampo('Importe');
        $au_det->setValoranterior($this->getImporte());
        $au_det->setNuevovalor('');
        $au_det->save();
        $au_det = new auditoria_detalle;
        $au_det->setAuditoriaId($auditoria->getId());
        $au_det->setCampo('Fecha');
        $au_det->setValoranterior($this->getCreatedAt('d-m-Y'));
        $au_det->setNuevovalor('');
        $au_det->save();
    }
    //Auditoria de Modificación
    public function AuditarActualizacion(){

              $auditoria = new auditoria();
              $auditoria->setEvento('MODIFICACION');
              $auditoria->setTabla('INGERSOS');
              $usuario = sfContext::getInstance()->getUser();
              $auditoria->setUsuario($usuario);
              $auditoria->save();


             //Creando los Detalles para la Auditoria

             //if($egresos->getDetallesDelPago()<>$this->getDetallesDelPago()){
                 $au_det = new auditoria_detalle;
                 $au_det->setAuditoriaId($auditoria->getId());
                 $au_det->setCampo('Detalles del INGREOS');
                 $au_det->setValoranterior($this->getDetallesDelIngreso_old());
                 $au_det->setNuevovalor($this->getDetallesDelIngreso());
                 $au_det->save();

             //}
             //if($egresos->getImporte()<>$this->getImporte()){
                 $au_det = new auditoria_detalle;
                 $au_det->setAuditoriaId($auditoria->getId());
                 $au_det->setCampo('Importe');
                 $au_det->setValoranterior($this->getImporte_old());
                 $au_det->setNuevovalor($this->getImporte());
                 $au_det->save();
             //}
             //if($egresos->getCategoriaEgresosId() != $this->getCategoriaEgresosId()){
                 $au_det = new auditoria_detalle;
                 $au_det->setAuditoriaId($auditoria->getId());
                 $au_det->setCampo('Categoria Egresos');
                 $au_det->setValoranterior($this->getCategoriaIngresosId_old());
                 $au_det->setNuevovalor($this->getcategoria_ingresos());
                 $au_det->save();
                 $au_det = new auditoria_detalle;
                 $au_det->setAuditoriaId($auditoria->getId());
                 $au_det->setCampo('Fecha');
                 $au_det->setValoranterior($this->getCreatedAt_old('d-m-Y'));
                 $au_det->setNuevovalor($this->getCreatedAt('d-m-Y'));
                 $au_det->save();
             //}

             }

    //


    private function BorrarMovimientos(){
         $criteria = new Criteria();
         $criteria->add(movimientosPeer::INGRESOS_ID,$this->getid());
         $movimientos = movimientosPeer::doSelectOne($criteria);
         $movimientos->delete();
    }
    public function delete(PropelPDO $con = null){
        auditoria::AuditoriaFull($this,true);
        $this->BorrarMovimientos();
        return parent::delete($con);    
    }

    public function __toString() {
        return $this->getId();
    }
    public function EsBorrable(){
        $criteria = new criteria; $criteria->add(movimientosPeer::INGRESOS_ID,$this->getId());
        $movimientos = movimientosPeer::doSelectOne($criteria);
        $cierre = $movimientos->getcierre_de_caja();
        return $cierre->getAbierto();
    }

}
